/*
 * MessageBox.java
 *
 * @author Michael Hansen
 * @author Lukas Thuernagel
 * @author Soeren Warszus
 */

package risk.messagebox;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;


public class MessageBox extends JFrame implements ActionListener{
    boolean id = false;
    boolean returnStatement = false;
    private Button ok,can;
    
    /** 
     * Konstruktor MessageBox 
     * Erstellen einer MessageBox
     * 
     * @param String msg Message, die angezeigt werden soll
     * @param boolean can Wahrheitswert, ob ein Cancel-Button angezeigt werden soll
     */
    public MessageBox(String msg, boolean can) {
        super("Message");
        this.setDefaultLookAndFeelDecorated(true);
        this.setResizable(false);
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setLayout(new BorderLayout());
        Label msgLabel = new Label(msg);
        msgLabel.setVisible(true);
        add("Center",msgLabel);
        addOKCancelPanel(can);
        createFrame();
        pack();
        toFront();
        setVisible(true);
        this.repaint();
    }

    /**
     * Hinzufuegen eines OK-Button. Wenn Paramerter boolean can
     * wahr ist, wird auch ein Cancel-Button hinzugefuegt
     *
     * @param boolean can
     */
    public void addOKCancelPanel(boolean can) {
        Panel p = new Panel();
        p.setLayout(new FlowLayout());
        createOKButton(p);
        if (can == true)
            createCancelButton(p);
        add("South",p);
        p.setVisible(true);
    }

    /**
     * Erstellung des OK-Buttons
     */
    public void createOKButton(Panel p) {
        p.add(ok = new Button("OK"));
        ok.addActionListener(this); 
    }

    /**
     * Erstellung des Cancel-Buttons
     */
    public void createCancelButton(Panel p) {
        p.add(can = new Button("Cancel"));
        can.addActionListener(this);
    }

    /**
     * Erzeugung des Frames
     */
    public void createFrame() {
        Dimension d = getToolkit().getScreenSize();
        setLocation(d.width/3,d.height/3);
    }

    /**
     * Actionhandling
     * 
     * @param ActionEvent ae
     */
    public void actionPerformed(ActionEvent ae){
        if(ae.getSource() == ok) {
            id = true;
            event(id);
        }
        else if(ae.getSource() == can) {
                event(id);
        }
        this.dispose();
    }
    
    /**
     * Handlung, die ausgefuehrt werden soll
     *
     * @param boolean bool
     */
    public void event(boolean bool){
        this.returnStatement = bool;
    }
    
    /**
     * Rueckgabe des Wahrheitwertes
     *
     * @return boolean bool
     */
    public boolean getReturnStatement(){
        return this.returnStatement;
    }
}
